Java final 与 C++ const
全部标签 可能重复:Whatdoesconstmeanfollowingafunction/methodsignature?我在C++的后期阅读中遇到了很多功能(特别是在Boost上),它有一个我以前从未见过的符号。virtualvoidB()const;你可以看到函数名后面有一个const!我看到const关键字主要是关于函数返回值(或作为参数)的,关于它们在函数中的用法,但这一个不同。有谁能告诉我它是什么,为什么我们要用它吗?它与函数上的const的传统用法有什么不同?int*constFunction(int*constconstantPointerToAnInteger,charcons
#includeusingnamespacestd;intmain(intargc,char*argv[]){inti1=0;inti2=10;constint*p=&i1;intconst*p2=&i1;constintconst*p3=&i1;p=&i2;p2=&i2;p3=&i2;cout代码可以用VC6.0和VC2010编译。但我有以下问题:constint*p=&i1;意思是“p”点不能修改,但是p不能修改,对吗?所以p=&i2;这条线可以遵守,是吗?这一行:intconst*p2=&i1;在我看来,这意味着p2不能修改,而p2点可以更改,对吗?为什么p2=&i2;可以编译吗
我尝试了以下行:staticconstconstchar*values[];但我在VC++警告C4114上收到以下警告:sametypequalifierusedmorethanonce.什么是正确的声明?目标是创建一个不可变的C字符串数组。 最佳答案 您编写了constconst而不是staticconstchar*constvalues[];(您将指针和基础值定义为const)另外,你需要初始化它:staticconstchar*constvalues[]={"字符串一","字符串二"};
根据我的理解,mutable取消了变量的constnessClassA{voidfoo()const{m_a=5;}mutableintm_a;};还有const_cast:voidprint(char*str){cout(c));return0;}那么,是什么改变了彼此?谢谢 最佳答案 const_cast无法取消对象的常量性。const_cast只能从对象的访问路径中移除constness。访问路径是对对象的指针或引用。从访问路径中删除常量性对对象本身绝对没有影响。即使您使用const_cast移除访问路径的常量性,仍然不一定会
为什么我会进入这段代码:voidfoo(constint**);intmain(){int**v=newint*[10];foo(v);return0;}这个错误:invalidconversionfrom‘int**’to‘constint**’[-fpermissive]|我认为可以将非常量转换为常量。 最佳答案 这是因为您正试图将int**转换为constint**int**v=newint*[10];//visint**foo(v);//butfootakesconstint**int**是:“指向整数指针的指针”。cons
这个问题在这里已经有了答案:Whatisthemeaningofaconstatendofamemberfunction?[duplicate](3个答案)关闭8年前。遇到两个const成员函数的解释classA{public:...voidf()const{}...}这意味着它只能访问常量成员;表示不修改任何成员;我觉得第二个是对的。但是为什么第一个出来呢?有什么需要澄清的吗?谢谢!
这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:ConstantsandcompileroptimizationinC++让圣战开始:关于C++中const的用处,我听到过许多不同的意见。当然,它在成员函数声明等方面也有用途。但它作为变量(或更确切地说,常量)的修饰符有多大用处?如果其余代码保持不变,它确实对优化器有帮助吗?
在我的程序中,我有这样一行:constchar*str=getStr();我是否需要在函数末尾调用str[]上的析构函数以防止内存泄漏? 最佳答案 问题没有包含足够的信息来告诉你,这取决于getStr()做了什么。例如:constchar*getStr(){return"boo";}那么你不能调用delete。constchar*getStr(){returnnewchar;}那么您应该调用deletestr;以避免内存泄漏(并且不得调用delete[])。constchar*getStr(){returnnewchar[10];}
就我在这里和那里阅读的内容而言,应该尽可能使用const。然而,我有一个案例一直困扰着我。如果成员函数不改变任何成员变量值但它在概念上不是const函数,我是否应该将其标记为const?例如:classEngine{public:intstatus;};classCar{public:voidstart()const{engine_->status=1;}private:std::unique_ptrengine_;};编译器将接受start()的constness,因为engine_作为指针没有改变。然而,在一个名为Car的类中,一个名为start的函数是一个const函数,这似乎太
给出这样的声明:classA{public:voidFoo()const;};这是什么意思?Google发现了这个:Memberfunctionsshouldbedeclaredwiththeconstkeywordafterthemiftheycanoperateonaconst(this)object.Ifthefunctionisnotdeclaredconst,incannotbeappliedtoaconstobject,andthecompilerwillgiveanerrormessage.但我觉得这有点令人困惑;谁能用更好的术语表达出来?谢谢。